1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 import javax.management.ObjectName;
36
37 public class ApplyWildcardTest {
38
39 private static final String positiveTests[][] = {
40 { "d:k=*", "d:k=\"\"" },
41
42 { "d:k=*", "d:k=" },
43 { "d:k=*", "d:k=v" },
44 { "d:k=a*b", "d:k=axyzb" },
45 { "d:k=a*b,*", "d:k=axyzb,k2=v2" },
46 { "d:*,k=a*b", "d:k=axyzb,k2=v2" },
47 { "d:k=?", "d:k=v" },
48 { "d:k=a?b", "d:k=axb" },
49 { "d:k=a?b,*", "d:k=axb,k2=v2" },
50 { "d:*,k=a?b", "d:k=axb,k2=v2" },
51 { "d:k=?*", "d:k=axyzb" },
52 { "d:k=a?bc*d", "d:k=axbcyzd" },
53 { "d:k=a?bc*d,*", "d:k=axbcyzd,k2=v2" },
54 { "d:*,k=a?bc*d", "d:k=axbcyzd,k2=v2" },
55 { "d:k1=?,k2=*", "d:k1=a,k2=ab" },
56 { "d:k1=a?b,k2=c*d", "d:k1=axb,k2=cyzd" },
57 { "d:k1=a?b,k2=c*d,*", "d:k1=axb,k2=cyzd,k3=v3" },
58 { "d:*,k1=a?b,k2=c*d", "d:k1=axb,k2=cyzd,k3=v3" },
59
60 { "d:k=\"*\"", "d:k=\"\"" },
61 { "d:k=\"*\"", "d:k=\"v\"" },
62 { "d:k=\"a*b\"", "d:k=\"axyzb\"" },
63 { "d:k=\"a*b\",*", "d:k=\"axyzb\",k2=\"v2\"" },
64 { "d:*,k=\"a*b\"", "d:k=\"axyzb\",k2=\"v2\"" },
65 { "d:k=\"?\"", "d:k=\"v\"" },
66 { "d:k=\"a?b\"", "d:k=\"axb\"" },
67 { "d:k=\"a?b\",*", "d:k=\"axb\",k2=\"v2\"" },
68 { "d:*,k=\"a?b\"", "d:k=\"axb\",k2=\"v2\"" },
69 { "d:k=\"?*\"", "d:k=\"axyzb\"" },
70 { "d:k=\"a?bc*d\"", "d:k=\"axbcyzd\"" },
71 { "d:k=\"a?bc*d\",*", "d:k=\"axbcyzd\",k2=\"v2\"" },
72 { "d:*,k=\"a?bc*d\"", "d:k=\"axbcyzd\",k2=\"v2\"" },
73 { "d:k1=\"?\",k2=\"*\"", "d:k1=\"a\",k2=\"ab\"" },
74 { "d:k1=\"a?b\",k2=\"c*d\"", "d:k1=\"axb\",k2=\"cyzd\"" },
75 { "d:k1=\"a?b\",k2=\"c*d\",*", "d:k1=\"axb\",k2=\"cyzd\",k3=\"v3\"" },
76 { "d:*,k1=\"a?b\",k2=\"c*d\"", "d:k1=\"axb\",k2=\"cyzd\",k3=\"v3\"" },
77 };
78
79 private static final String negativeTests[][] = {
80 { "d:k=\"*\"", "d:k=" },
81
82 { "d:k=*", "d:k=,k2=" },
83 { "d:k=*", "d:k=v,k2=v2" },
84 { "d:k=a*b", "d:k=axyzbc" },
85 { "d:k=a*b,*", "d:k=axyzbc,k2=v2" },
86 { "d:*,k=a*b", "d:k=axyzbc,k2=v2" },
87 { "d:k=?", "d:k=xyz" },
88 { "d:k=a?b", "d:k=ab" },
89 { "d:k=a?b,*", "d:k=ab,k2=v2" },
90 { "d:*,k=a?b", "d:k=ab,k2=v2" },
91 { "d:k=?*", "d:k=axyzb,k2=v2" },
92 { "d:k=a?bc*d", "d:k=abcd" },
93 { "d:k=a?bc*d,*", "d:k=abcd,k2=v2" },
94 { "d:*,k=a?bc*d", "d:k=abcd,k2=v2" },
95 { "d:k1=?,k2=*", "d:k1=ab,k2=ab" },
96 { "d:k1=a?b,k2=c*d", "d:k1=ab,k2=cd" },
97 { "d:k1=a?b,k2=c*d,*", "d:k1=ab,k2=cd,k3=v3" },
98 { "d:*,k1=a?b,k2=c*d", "d:k1=ab,k2=cd,k3=v3" },
99
100 { "d:k=\"*\"", "d:k=\"\",k2=\"\"" },
101 { "d:k=\"*\"", "d:k=\"v\",k2=\"v2\"" },
102 { "d:k=\"a*b\"", "d:k=\"axyzbc\"" },
103 { "d:k=\"a*b\",*", "d:k=\"axyzbc\",k2=\"v2\"" },
104 { "d:*,k=\"a*b\"", "d:k=\"axyzbc\",k2=\"v2\"" },
105 { "d:k=\"?\"", "d:k=\"xyz\"" },
106 { "d:k=\"a?b\"", "d:k=\"ab\"" },
107 { "d:k=\"a?b\",*", "d:k=\"ab\",k2=\"v2\"" },
108 { "d:*,k=\"a?b\"", "d:k=\"ab\",k2=\"v2\"" },
109 { "d:k=\"?*\"", "d:k=\"axyzb\",k2=\"v2\"" },
110 { "d:k=\"a?bc*d\"", "d:k=\"abcd\"" },
111 { "d:k=\"a?bc*d\",*", "d:k=\"abcd\",k2=\"v2\"" },
112 { "d:*,k=\"a?bc*d\"", "d:k=\"abcd\",k2=\"v2\"" },
113 { "d:k1=\"?\",k2=\"*\"", "d:k1=\"ab\",k2=\"ab\"" },
114 { "d:k1=\"a?b\",k2=\"c*d\"", "d:k1=\"ab\",k2=\"cd\"" },
115 { "d:k1=\"a?b\",k2=\"c*d\",*", "d:k1=\"ab\",k2=\"cd\",k3=\"v3\"" },
116 { "d:*,k1=\"a?b\",k2=\"c*d\"", "d:k1=\"ab\",k2=\"cd\",k3=\"v3\"" },
117 };
118
119 private static int runPositiveTests() {
120 int error = 0;
121 for (int i = 0; i < positiveTests.length; i++) {
122 System.out.println("----------------------------------------------");
123 try {
124 ObjectName on1 = ObjectName.getInstance(positiveTests[i][0]);
125 ObjectName on2 = ObjectName.getInstance(positiveTests[i][1]);
126 System.out.println("\"" + on1 + "\".apply(\"" + on2 + "\")");
127 boolean result = on1.apply(on2);
128 System.out.println("Result = " + result);
129 if (result == false) {
130 error++;
131 System.out.println("Test failed!");
132 } else {
133 System.out.println("Test passed!");
134 }
135 } catch (Exception e) {
136 error++;
137 System.out.println("Got Unexpected Exception = " + e.toString());
138 System.out.println("Test failed!");
139 }
140 System.out.println("----------------------------------------------");
141 }
142 return error;
143 }
144
145 private static int runNegativeTests() {
146 int error = 0;
147 for (int i = 0; i < negativeTests.length; i++) {
148 System.out.println("----------------------------------------------");
149 try {
150 ObjectName on1 = ObjectName.getInstance(negativeTests[i][0]);
151 ObjectName on2 = ObjectName.getInstance(negativeTests[i][1]);
152 System.out.println("\"" + on1 + "\".apply(\"" + on2 + "\")");
153 boolean result = on1.apply(on2);
154 System.out.println("Result = " + result);
155 if (result == true) {
156 error++;
157 System.out.println("Test failed!");
158 } else {
159 System.out.println("Test passed!");
160 }
161 } catch (Exception e) {
162 error++;
163 System.out.println("Got Unexpected Exception = " + e.toString());
164 System.out.println("Test failed!");
165 }
166 System.out.println("----------------------------------------------");
167 }
168 return error;
169 }
170
171 public static void main(String[] args) throws Exception {
172
173 int error = 0;
174
175
176
177 System.out.println("----------------------------------------------");
178 System.out.println("Test ObjectName.apply(null)");
179 try {
180 new ObjectName("d:k=v").apply(null);
181 error++;
182 System.out.println("Didn't get expected NullPointerException!");
183 System.out.println("Test failed!");
184 } catch (NullPointerException e) {
185 System.out.println("Got expected exception '" + e.toString() + "'");
186 System.out.println("Test passed!");
187 } catch (Exception e) {
188 error++;
189 System.out.println("Got unexpected exception '" + e.toString() + "'");
190 System.out.println("Test failed!");
191 }
192 System.out.println("----------------------------------------------");
193
194
195
196 System.out.println("----------------------------------------------");
197 System.out.println("Test ObjectName.apply(domain_pattern)");
198 try {
199 if (new ObjectName("d:k=v").apply(new ObjectName("*:k=v"))) {
200 error++;
201 System.out.println("Got 'true' expecting 'false'");
202 System.out.println("Test failed!");
203 } else {
204 System.out.println("Got expected return value 'false'");
205 System.out.println("Test passed!");
206 }
207 } catch (Exception e) {
208 error++;
209 System.out.println("Got unexpected exception = " + e.toString());
210 System.out.println("Test failed!");
211 }
212 System.out.println("----------------------------------------------");
213
214
215
216 System.out.println("----------------------------------------------");
217 System.out.println("Test ObjectName.apply(key_property_list_pattern)");
218 try {
219 if (new ObjectName("d:k=v").apply(new ObjectName("d:k=v,*"))) {
220 error++;
221 System.out.println("Got 'true' expecting 'false'");
222 System.out.println("Test failed!");
223 } else {
224 System.out.println("Got expected return value 'false'");
225 System.out.println("Test passed!");
226 }
227 } catch (Exception e) {
228 error++;
229 System.out.println("Got unexpected exception = " + e.toString());
230 System.out.println("Test failed!");
231 }
232 System.out.println("----------------------------------------------");
233
234
235
236 System.out.println("----------------------------------------------");
237 System.out.println("Test ObjectName.apply(key_property_value_pattern)");
238 try {
239 if (new ObjectName("d:k=v").apply(new ObjectName("d:k=*"))) {
240 error++;
241 System.out.println("Got 'true' expecting 'false'");
242 System.out.println("Test failed!");
243 } else {
244 System.out.println("Got expected return value 'false'");
245 System.out.println("Test passed!");
246 }
247 } catch (Exception e) {
248 error++;
249 System.out.println("Got unexpected exception = " + e.toString());
250 System.out.println("Test failed!");
251 }
252 System.out.println("----------------------------------------------");
253
254 error += runPositiveTests();
255 error += runNegativeTests();
256
257 if (error > 0) {
258 final String msg = "Test FAILED! Got " + error + " error(s)";
259 System.out.println(msg);
260 throw new IllegalArgumentException(msg);
261 } else {
262 System.out.println("Test PASSED!");
263 }
264 }
265 }